package com.luxsoft.siipap.em.replica.ui.tasks;

import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.Action;

public class MigrationTaskFactory {
	
	public static List<Action> getMigrationActions(){
		List<Action> actions=new ArrayList<Action>();
		for(Entidad e:Entidad.values()){
			actions.add(new MigracionTaskAction(e));
		}
		return actions;
		
	}
	
	public static class MigracionTaskAction extends AbstractAction{
		
		private final Entidad entidad;

		public MigracionTaskAction(Entidad e) {
			super(e.name());
			this.entidad=e;
			
		}

		public void actionPerformed(ActionEvent e) {
			switch (entidad) {
			case INI:
				new ImportadorDeInventarioInicialTask().execute();
				break;
			case Movimientos:
				new ImportadorDeMovsTask().execute();
				break;
			case Ventas:
				new ImportadorDeVentasTask().execute();
				break;
			case Devoluciones:
				new ImportadorDeDevolucionesTask().execute();
				break;
			case Productos:
				new ImportadorDeProductosTask().execute();
				break;
			case NotasDeCargo:
				new ImportadorDeNotasDeCargoTask().execute();
				break;
			case NotasDeCredito:
				new ImportadorDeNotasTask().execute();
				break;
			case Pagos:
				new ImportadorDePagosTask().execute();
				break;
			case Pagos_Contado:
				new ImportadorDePagosDeContadoTask().execute();
				break;
			case NotasDeCargo_Pagos:
				new ImportadorAplicacionesDeNotasDeCargoTask().execute();
				break;
			case Clientes_Credito:
				new ActualizadorDeClientesTask().execute();
				break;
			case Exportar_Saldos_Clientes:
				new ExportadorDeSaldosDeClientesTask().execute();
				break;
			default:
				break;
			}
		}
		
	}
	
	private static enum Entidad{
		Ventas
		,Devoluciones
		,NotasDeCargo
		,NotasDeCargo_Pagos
		,NotasDeCredito
		,Pagos
		,Pagos_Contado
		,Productos
		,ListaDePrecios
		,Compras
		,COMs
		,INI
		,Movimientos		
		,Analisis
		,Clientes_Credito
		,Exportar_Saldos_Clientes
		
	}

}
